package com.xujiang.common.uiutil;

import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.widget.Button;

import com.xujiang.common.R;
import com.xujiang.common.util.PreferencesUtils;

/**
 * 非规则的倒计时类
 * 使用xml进行了存储
 *
 * @author xujiang
 * @version 2017-05-05
 */
public class irregularCountdown {

    private String START_CLOCK_TIME = "start_clock_time";  //开始记时时间
    private String START_CLOCK_TIMES = "start_clock_times";  //记时的次数
    private Integer timelong;  //记时时长  30s  60s 7200s
    private MCountDownTimer mc;   //一个倒计时工具类
    private Button btSendemail;

    PreferencesUtils preferencesUtils;
    long clockTime;  //倒计时开始时间戳
    Integer clockTimes;  //点击次数 每3次清空

    private Context context;

    public irregularCountdown(Context context){
        this.context = context;
    }

    /**
     *  在oncreat中调用此函数
     *
     */
    public void setButtonClockandEnable() {
        //设置一个Preferences文件存储次数和上次点击时间
        preferencesUtils = PreferencesUtils.from("COUNT_NUMBER");
        clockTime = (long) preferencesUtils.get(START_CLOCK_TIME, (long) 0);  //上次时间 如果没有返回0  表示上次没有或已经到第三次 进行重置
        clockTimes = (Integer) preferencesUtils.get(START_CLOCK_TIMES, 0);  //上次属于第几次点击

        if (clockTimes != 0) {
            switch (clockTimes) {  // 1 2 3 次分别对应 30s  1分钟 和2小时
                case 1:
                    timelong = 30;
                    break;
                case 2:
                    timelong = 60;
                    break;
                case 3:
                    timelong = 7200;
                    break;

            }
        }

        if (clockTime != 0) {
            long passedTime = System.currentTimeMillis() - clockTime;  //当前时间减去存储的时间
            if (passedTime > timelong * 1000) {
                //设置按钮可点击
                btSendemail.setEnabled(true);
                btSendemail.setBackgroundResource(R.drawable.button_style);  //可点击的样式变化
            } else {
                long sencond = (timelong * 1000 - passedTime);  //设置显示的秒数
                mc = new MCountDownTimer(sencond, 1000, btSendemail);  //第一个为倒计时时间  第二个为每一秒刷新时间
                mc.start();    //开始计时
                btSendemail.setBackgroundColor(ContextCompat.getColor(context,R.color.noclick));  //设置成灰色 表示不可点击
                btSendemail.setEnabled(false);
            }
        }
    }


    /**
     * 对不同次数时间的选择
     * 在oncreate中调用次函数
     */
    private void limitClock() {
        if (clockTimes == 0) {
            buttonClock(System.currentTimeMillis(), 1, 30 * 1000, btSendemail);
        } else if (clockTimes == 1) {
            buttonClock(System.currentTimeMillis(), 2, 60 * 1000, btSendemail);
        } else if (clockTimes == 2) {
            buttonClock(System.currentTimeMillis(), 3, 7200 * 1000, btSendemail);
        } else if (clockTimes == 3) {
            buttonClock(0, 0, 30 * 1000, btSendemail);
        }
        preferencesUtils.apply();
    }

    /**
     * 对点击按钮发送邮件后的设置
     *
     * @param nowtime 现在的时间戳
     * @param times 点击获取邮件的次数  三次一归0
     * @param millisInFuture 本次需要倒计时的时间
     * @param btSendemail button按钮对象
     */
    private void buttonClock(long nowtime, int times, int millisInFuture, Button btSendemail) {
        preferencesUtils.put(START_CLOCK_TIME, nowtime);
        preferencesUtils.put(START_CLOCK_TIMES, times);
        mc = new MCountDownTimer(millisInFuture, 1000, btSendemail);
        mc.start();
        btSendemail.setBackgroundColor(context.getResources().getColor(R.color.noclick));  //设置成灰色 表示不可点击
        btSendemail.setEnabled(false);
    }

    /**
     *
     *         一般在点击按钮时调用以下函数
     *         //发送邮件成功后执行下面函数
     limitClock();

     //以下代码是为了循化或者满足某条件就重置
     //请在登陆成功的地方调用清空代码，或者将数据至0
     //preferencesUtils = PreferencesUtils.from("COUNT_NUMBER");
     //preferencesUtils.put(START_CLOCK_TIME, (long)0);
     //preferencesUtils.put(START_CLOCK_TIMES,0);
     //preferencesUtils.apply();
     //或者
     //preferencesUtils.clear(); //清除数据
     *
     */

}
